home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 0.9.1.3 stable / flock-0.9.1.3.en-US.win32.exe / flock / chrome / browser.jar / content / browser / preferences / main.js < prev    next >
Text File  |  2006-08-23  |  15KB  |  411 lines

  1. //@line 39 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/preferences/main.js"
  2.  
  3. var gMainPane = {
  4.   _pane: null,
  5.  
  6.   /**
  7.    * Initialization of this.
  8.    */
  9.   init: function ()
  10.   {
  11.     this._pane = document.getElementById("paneMain");
  12.  
  13.     // set up the "use current page" label-changing listener
  14.     this._updateUseCurrentButton();
  15.     window.addEventListener("focus", this._updateUseCurrentButton, false);
  16.   },
  17.  
  18.   // HOME PAGE
  19.  
  20.   /*
  21.    * Preferences:
  22.    *
  23.    * browser.startup.homepage
  24.    * - the user's home page, as a string; if the home page is a set of tabs,
  25.    *   this will be those URLs separated by the pipe character "|"
  26.    * browser.startup.page
  27.    * - what page(s) to show when the user starts the application, as an integer:
  28.    *
  29.    *     0: a blank page
  30.    *     1: the home page (as set by the browser.startup.homepage pref)
  31.    *     2: the last page the user visited (DEPRECATED)
  32.    *     3: windows and tabs from the last session (a.k.a. session restore)
  33.    *
  34.    *   The deprecated option is not exposed in UI; however, if the user has it
  35.    *   selected and doesn't change the UI for this preference, the deprecated
  36.    *   option is preserved.
  37.    */
  38.  
  39.   /**
  40.    * Sets the home page to the current displayed page (or frontmost tab, if the
  41.    * most recent browser window contains multiple tabs), updating preference
  42.    * window UI to reflect this.
  43.    */
  44.   setHomePageToCurrent: function ()
  45.   {
  46.     var win;
  47.     if (document.documentElement.instantApply) {
  48.       // If we're in instant-apply mode, use the most recent browser window
  49.       var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
  50.                          .getService(Components.interfaces.nsIWindowMediator);
  51.       win = wm.getMostRecentWindow("navigator:browser");
  52.     }
  53.     else
  54.       win = window.opener;
  55.  
  56.     if (win) {
  57.       var homePage = document.getElementById("browser.startup.homepage");
  58.       var browser = win.document.getElementById("content");
  59.  
  60.       var newVal = browser.browsers[0].currentURI.spec;
  61.       if (browser.browsers.length > 1) {
  62.         // XXX using dangerous "|" joiner!
  63.         for (var i = 1; i < browser.browsers.length; i++)
  64.           newVal += "|" + browser.browsers[i].currentURI.spec;
  65.       }
  66.  
  67.       homePage.value = newVal;
  68.     }
  69.   },
  70.  
  71.   /**
  72.    * Displays a dialog in which the user can select a bookmark to use as home
  73.    * page.  If the user selects a bookmark, that bookmark's name is displayed in
  74.    * UI and the bookmark's address is stored to the home page preference.
  75.    */
  76.   setHomePageToBookmark: function ()
  77.   {
  78.     var rv = { urls: null, names: null };
  79. //@line 119 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/preferences/main.js"
  80.     document.documentElement.openSubDialog("chrome://browser/content/bookmarks/selectBookmark.xul",
  81. //@line 121 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/preferences/main.js"
  82.                                            "resizable", rv);  
  83.     if (rv.urls && rv.names) {
  84.       var homePage = document.getElementById("browser.startup.homepage");
  85.  
  86.       // XXX still using dangerous "|" joiner!
  87.       homePage.value = rv.urls.join("|");
  88.     }
  89.   },
  90.  
  91.   /**
  92.    * Switches the "Use Current Page" button between its singular and plural
  93.    * forms.
  94.    */
  95.   _updateUseCurrentButton: function () {
  96.     var useCurrent = document.getElementById("useCurrent");
  97.  
  98.     var win;
  99.     if (document.documentElement.instantApply) {
  100.       const Cc = Components.classes, Ci = Components.interfaces;
  101.       // If we're in instant-apply mode, use the most recent browser window
  102.       var wm = Cc["@mozilla.org/appshell/window-mediator;1"]
  103.                  .getService(Ci.nsIWindowMediator);
  104.       win = wm.getMostRecentWindow("navigator:browser");
  105.     }
  106.     else
  107.       win = window.opener;
  108.  
  109.     if (win && win.document.documentElement
  110.                   .getAttribute("windowtype") == "navigator:browser") {
  111.       useCurrent.disabled = false;
  112.  
  113.       var tabbrowser = win.document.getElementById("content");
  114.       if (tabbrowser.browsers.length > 1)
  115.         useCurrent.label = useCurrent.getAttribute("label2");
  116.       else
  117.         useCurrent.label = useCurrent.getAttribute("label1");
  118.     }
  119.     else
  120.       useCurrent.disabled = true;
  121.   },
  122.  
  123.   /**
  124.    * Restores the default home page as the user's home page.
  125.    */
  126.   restoreDefaultHomePage: function ()
  127.   {
  128.     var homePage = document.getElementById("browser.startup.homepage");
  129.     homePage.value = homePage.defaultValue;
  130.   },
  131.  
  132.   // DOWNLOADS
  133.  
  134.   /*
  135.    * Preferences:
  136.    * 
  137.    * browser.download.showWhenStarting
  138.    *   true if the Download Manager should be opened when a download is started,
  139.    *   false if it shouldn't be opened
  140.    * browser.download.closeWhenDone
  141.    *   true if the Download Manager should be closed when all downloads
  142.    *   complete, false if it shouldn't be closed
  143.    * browser.download.useDownloadDir
  144.    *   true if downloads are saved to a default location with no UI shown, false
  145.    *   if the user should always be asked where to save files
  146.    * browser.download.dir
  147.    *   the last directory to which a download was saved
  148.    * browser.download.downloadDir
  149.    *   the current default download location
  150.    * browser.download.folderList
  151.    *   0 if the desktop is the default download location,
  152.    *   1 if the downloads folder is the default download location,
  153.    *   2 if the default download location is elsewhere;
  154.    *   used to display special UI when the default location is the Desktop or
  155.    *   the Downloads folder in Download Manager UI and in the file field in
  156.    *   preferences
  157.    */
  158.  
  159.   /**
  160.    * Updates preferences which depend upon the value of the preference which
  161.    * determines whether the Downloads manager is opened at the start of a
  162.    * download.
  163.    */
  164.   readShowDownloadsWhenStarting: function ()
  165.   {
  166.     this.showDownloadsWhenStartingPrefChanged();
  167.  
  168.     // don't override the preference's value in UI
  169.     return undefined;
  170.   },
  171.  
  172.   /**
  173.    * Enables or disables the "close Downloads manager when downloads finished"
  174.    * preference element, consequently updating the associated UI.
  175.    */
  176.   showDownloadsWhenStartingPrefChanged: function ()
  177.   {
  178.     var showWhenStartingPref = document.getElementById("browser.download.manager.showWhenStarting");
  179.     var closeWhenDonePref = document.getElementById("browser.download.manager.closeWhenDone");
  180.     closeWhenDonePref.disabled = !showWhenStartingPref.value;
  181.   },
  182.  
  183.   /**
  184.    * Enables/disables the folder field and Browse button based on whether a
  185.    * default download directory is being used.
  186.    */
  187.   readUseDownloadDir: function ()
  188.   {
  189.     var downloadFolder = document.getElementById("downloadFolder");
  190.     var chooseFolder = document.getElementById("chooseFolder");
  191.     var preference = document.getElementById("browser.download.useDownloadDir");
  192.     downloadFolder.disabled = !preference.value;
  193.     chooseFolder.disabled = !preference.value;
  194.  
  195.     // don't override the preference's value in UI
  196.     return undefined;
  197.   },
  198.  
  199.   /**
  200.    * Displays a file picker in which the user can choose the location where
  201.    * downloads are automatically saved, updating preferences and UI in
  202.    * response to the choice, if one is made.
  203.    */
  204.   chooseFolder: function ()
  205.   {
  206.     const nsIFilePicker = Components.interfaces.nsIFilePicker;
  207.     var fp = Components.classes["@mozilla.org/filepicker;1"]
  208.                        .createInstance(nsIFilePicker);
  209.     var bundlePreferences = document.getElementById("bundlePreferences");
  210.     var title = bundlePreferences.getString("chooseDownloadFolderTitle");
  211.     fp.init(window, title, nsIFilePicker.modeGetFolder);
  212.  
  213.     const nsILocalFile = Components.interfaces.nsILocalFile;
  214.     var customDirPref = document.getElementById("browser.download.dir");
  215.     if (customDirPref.value)
  216.       fp.displayDirectory = customDirPref.value;
  217.     fp.appendFilters(nsIFilePicker.filterAll);
  218.     if (fp.show() == nsIFilePicker.returnOK) {
  219.       var file = fp.file.QueryInterface(nsILocalFile);
  220.       var currentDirPref = document.getElementById("browser.download.downloadDir");
  221.       customDirPref.value = currentDirPref.value = file;
  222.       var folderListPref = document.getElementById("browser.download.folderList");
  223.       folderListPref.value = this._folderToIndex(file);
  224.     }
  225.   },
  226.  
  227.   /**
  228.    * Initializes the download folder widget based on the folder as stored in
  229.    * preferences.
  230.    */
  231.   readDownloadDirPref: function ()
  232.   {
  233.     var folderListPref = document.getElementById("browser.download.folderList");
  234.     var bundlePreferences = document.getElementById("bundlePreferences");
  235.     var downloadFolder = document.getElementById("downloadFolder");
  236.  
  237.     var customDirPref = document.getElementById("browser.download.dir");
  238.     var customIndex = customDirPref.value ? this._folderToIndex(customDirPref.value) : 0;
  239.     if (folderListPref.value == 0 || customIndex == 0)
  240.       downloadFolder.label = bundlePreferences.getString("desktopFolderName");
  241.     else if (folderListPref.value == 1 || customIndex == 1)
  242.       downloadFolder.label = bundlePreferences.getString("myDownloadsFolderName");
  243.     else
  244.       downloadFolder.label = this._getDisplayNameOfFile(customDirPref.value);
  245.  
  246.     var ios = Components.classes["@mozilla.org/network/io-service;1"]
  247.                         .getService(Components.interfaces.nsIIOService);
  248.     var fph = ios.getProtocolHandler("file")
  249.                  .QueryInterface(Components.interfaces.nsIFileProtocolHandler);
  250.     var currentDirPref = document.getElementById("browser.download.downloadDir");
  251.     var downloadDir = currentDirPref.value || this._indexToFolder(folderListPref.value);
  252.     var urlspec = fph.getURLSpecFromFile(downloadDir);
  253.     downloadFolder.image = "moz-icon://" + urlspec + "?size=16";
  254.  
  255.     // don't override the preference's value in UI
  256.     return undefined;
  257.   },
  258.  
  259.   /**
  260.    * Determines the type of the given folder.
  261.    *
  262.    * @param   aFolder
  263.    *          the folder whose type is to be determined
  264.    * @returns integer
  265.    *          0 if aFolder is the Desktop or is unspecified,
  266.    *          1 if aFolder is the Downloads folder,
  267.    *          2 otherwise
  268.    */
  269.   _folderToIndex: function (aFolder)
  270.   {
  271.     if (!aFolder || aFolder.equals(this._getDownloadsFolder("Desktop")))
  272.       return 0;
  273.     else if (aFolder.equals(this._getDownloadsFolder("Downloads")))
  274.       return 1;
  275.     return 2;
  276.   },
  277.  
  278.   /**
  279.    * Returns the Downloads folder.  If aFolder is "Desktop", then the Downloads
  280.    * folder returned is the desktop folder; otherwise, it is a folder whose name
  281.    * indicates that it is a download folder and whose path is as determined by
  282.    * the XPCOM directory service from aFolder.
  283.    *
  284.    * @throws if aFolder is not "Desktop" or "Downloads"
  285.    */
  286.   _getDownloadsFolder: function (aFolder)
  287.   {
  288.     var fileLocator = Components.classes["@mozilla.org/file/directory_service;1"]
  289.                                 .getService(Components.interfaces.nsIProperties);
  290.     var dir = fileLocator.get(this._getSpecialFolderKey(aFolder),
  291.                               Components.interfaces.nsILocalFile);
  292.     if (aFolder != "Desktop")
  293.       dir.append("My Downloads"); // XXX l12y!
  294.  
  295.     return dir;
  296.   },
  297.  
  298.   /**
  299.    * Gets the platform-specific key to be fed to the directory service for the
  300.    * given special folder.
  301.    *
  302.    * @param   aFolder
  303.    *          either of the strings "Desktop" or "Downloads"
  304.    * @returns the platform-specific key for the location, which may be used with
  305.    *          the XPCOM directory service
  306.    */
  307.   _getSpecialFolderKey: function (aFolderType)
  308.   {
  309.     if (aFolderType == "Desktop")
  310.       return "Desk";
  311.  
  312.     if (aFolderType == "Downloads")
  313. //@line 353 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/preferences/main.js"
  314.       return "Pers";
  315. //@line 361 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/preferences/main.js"
  316.  
  317.       throw "ASSERTION FAILED: folder type should be 'Desktop' or 'Downloads'";
  318.   },
  319.  
  320.   /**
  321.    * Returns the textual path of a folder in readable form.
  322.    */
  323.   _getDisplayNameOfFile: function (aFolder)
  324.   {
  325.     // TODO: would like to add support for 'Downloads on Macintosh HD'
  326.     //       for OS X users.
  327.     return aFolder ? aFolder.path : "";
  328.   },
  329.  
  330.   /**
  331.    * Converts an integer into the corresponding folder.
  332.    *
  333.    * @param   aIndex
  334.    *          an integer
  335.    * @returns the Desktop folder if aIndex == 0,
  336.    *          the Downloads folder if aIndex == 1,
  337.    *          the folder stored in browser.download.dir otherwise
  338.    */
  339.   _indexToFolder: function (aIndex)
  340.   {
  341.     switch (aIndex) {
  342.       case 0:
  343.         return this._getDownloadsFolder("Desktop");
  344.       case 1:
  345.         return this._getDownloadsFolder("Downloads");
  346.     }
  347.  
  348.     var customDirPref = document.getElementById("browser.download.dir");
  349.     return customDirPref.value;
  350.   },
  351.  
  352.   /**
  353.    * Returns the value for the browser.download.folderList preference determined
  354.    * from the current value of browser.download.downloadDir.
  355.    */
  356.   writeFolderList: function ()
  357.   {
  358.     var currentDirPref = document.getElementById("browser.download.downloadDir");
  359.     return this._folderToIndex(currentDirPref.value);
  360.   }
  361.  
  362. //@line 408 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/preferences/main.js"
  363.   ,
  364.  
  365.   // SYSTEM DEFAULTS
  366.  
  367.   /*
  368.    * Preferences:
  369.    *
  370.    * browser.shell.checkDefault
  371.    * - true if a default-browser check (and prompt to make it so if necessary)
  372.    *   occurs at startup, false otherwise
  373.    */
  374.  
  375.   /**
  376.    * Checks whether the browser is currently registered with the operating
  377.    * system as the default browser.  If the browser is not currently the
  378.    * default browser, the user is given the option of making it the default;
  379.    * otherwise, the user is informed that this browser already is the browser.
  380.    */
  381.   checkNow: function ()
  382.   {
  383.     var shellSvc = Components.classes["@mozilla.org/browser/shell-service;1"]
  384.                              .getService(Components.interfaces.nsIShellService);
  385.     var brandBundle = document.getElementById("bundleBrand");
  386.     var shellBundle = document.getElementById("bundleShell");
  387.     var brandShortName = brandBundle.getString("brandShortName");
  388.     var promptTitle = shellBundle.getString("setDefaultBrowserTitle");
  389.     var promptMessage;
  390.     const IPS = Components.interfaces.nsIPromptService;
  391.     var psvc = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
  392.                          .getService(IPS);
  393.     if (!shellSvc.isDefaultBrowser(false)) {
  394.       promptMessage = shellBundle.getFormattedString("setDefaultBrowserMessage", 
  395.                                                      [brandShortName]);
  396.       var rv = psvc.confirmEx(window, promptTitle, promptMessage, 
  397.                               (IPS.BUTTON_TITLE_YES * IPS.BUTTON_POS_0) + 
  398.                               (IPS.BUTTON_TITLE_NO * IPS.BUTTON_POS_1),
  399.                               null, null, null, null, { });
  400.       if (rv == 0)
  401.         shellSvc.setDefaultBrowser(true, false);
  402.     }
  403.     else {
  404.       promptMessage = shellBundle.getFormattedString("alreadyDefaultBrowser",
  405.                                                      [brandShortName]);
  406.       psvc.alert(window, promptTitle, promptMessage);
  407.     }
  408.   }
  409. //@line 455 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/preferences/main.js"
  410. };
  411.